import Vue from 'vue'
import VueRouter from 'vue-router'
import routes from './routes'

Vue.use(VueRouter)

const router = new VueRouter({
  routes
})

// 挂载路由导航守卫
// to 代表要去的路径
// from 代表从哪个路径来的
// next 是一个函数，表示放行
// next()表示放行，next('/home')表示强制跳转
router.beforeEach((to, from, next) => {
  if (to.path === '/login') {
    // 去登录页，放行
    return next()
  } else if (to.path === '/register') {
    // 去注册页，放行
    return next()
  } else {
    // 除了去登录页和客户端首页外的其他一切页面，都需从客户端sessionStorage获取token
    const tokenStr = window.sessionStorage.getItem('token')
    // 判断token是否存在
    if (!tokenStr) {
      // token不存在，强制跳转到登录页
      return next('/login')
    } else {
      // token存在，直接放行
      return next()
    }
  }
})

// 解决重复多次点击某个操作，频繁触发同一个路由的情况
const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push (location) {
  return originalPush.call(this, location).catch(err => err)
}

export default router
